package com.zp.self.module.level_4_算法练习.算法.双指针.左右指针;
import org.junit.Test;

import java.util.Arrays;

/**
 * @author By ZengPeng
 */
public class 力扣_922_按奇偶排序数组II{
    @Test
    public void main() {
        
        Solution solution = new 力扣_922_按奇偶排序数组II().new Solution();
        System.out.println(Arrays.toString(solution.sortArrayByParityII(new int[]{4,2,5,7})));
    }

    /**
     题目：给定一个非负整数数组 nums， nums 中一半整数是 奇数 ，一半整数是 偶数 。
         对数组进行排序，以便当 nums[i] 为奇数时，i 也是 奇数 ；当 nums[i] 为偶数时， i 也是 偶数 。
         你可以返回 任何满足上述条件的数组作为答案 。

     示例 1：
     输入：nums = [4,2,5,7]
     输出：[4,5,2,7]
     解释：[4,7,2,5]，[2,5,4,7]，[2,7,4,5] 也会被接受。

     示例 2：
     输入：nums = [2,3]
     输出：[2,3]

     分析：【P 💖💖💖】
        1.双指针：先把偶数放在左边，然后再遍历一次进行交换
                --执行耗时:2 ms,击败了96.91% 的Java用户
                --编码耗时:[22:00]

     边界值 & 注意点：
        1.
     **/
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] sortArrayByParityII(int[] nums) {
        int index =0,length=nums.length;
        for (int i = 0; i < length; i++) {
            if((nums[i]&1)==0){
                int temp = nums[index];
                nums[index++] = nums[i];
                nums[i]=temp;
            }
        }
        System.out.println(Arrays.toString(nums));
        for (int i = 1; i < length/2; i+=2) {
            int temp = nums[i];
            nums[i] = nums[length-i-1];
            nums[length-i-1] = temp;
        }
        return nums;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}